
package modelo.bo.cmd.contato;

import java.io.IOException;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modelo.bo.cmd.Acao;
import modelo.bo.cmd.EICommand;
import modelo.dao.impl.ContatoImpl;
import modelo.dao.impl.TelefoneImpl;
import modelo.dao.util.ConexaoMySQL;
import modelo.dto.*;

public class CadastrarContato extends Acao {
	private Contato contato;
	private Operadora operadora;
		
	public CadastrarContato() {
		this.contato = new Contato();
		this.operadora = new Operadora();	
	}
	
	@Override
	public void init(HttpServletRequest request) {
		super.pagina = String.format("/contato/agenda.do?entidade=%s&cmd=%s", 
				EEntidade.CONTATO, EICommand.CARREGAR_FORM_CONTATO);
		
		this.contato.setNome(request.getParameter("nome"));
		this.contato.setSobreNome(request.getParameter("sobreNome"));
		this.contato.setSexo(request.getParameter("sexo"));
		this.contato.setComentario(request.getParameter("comentario"));
		this.contato.adicionarEmail(request.getParameter("email"));
		this.contato.getGrupo().setCodigo(Integer.parseInt(request.getParameter("grupo")));
		
		this.operadora.setCodigo(Integer.parseInt(request.getParameter("operadora")));
						
		this.contato.adicionarTelefone(request.getParameter("celular"));
		this.contato.adicionarTelefone(request.getParameter("residencial"));
		this.contato.adicionarTelefone(request.getParameter("comercial"));		
		
		this.contato.getTelefones().get(0).setOperadora(operadora);
	}

	@Override
	public boolean executar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		super.msg = String.format("Contato \" %s \" cadastrado com sucesso.", this.contato.getNome());
		Contato cont = null;		
		Connection conn = null;		
										
		try {
			conn = ConexaoMySQL.getConnection();
			
			ContatoImpl ci = new ContatoImpl(conn);

			if(ci.cadastrar(this.contato)) {
				
				cont = (Contato) ci.getUltimoObjeto();
				
				TelefoneImpl ti = new TelefoneImpl(conn);				
								
				for(Telefone tel : this.contato.getTelefones()) {
					tel.setContato(cont);
			
					ti.cadastrar(tel);
				}
				request.setAttribute("msg", super.msg);
			}
		}
		catch (SQLException e) {
			e.printStackTrace();
        	super.msg = "Erro ao tentar cadastrar um novo contato. ";
        	System.out.println(msg + e.getMessage());
			request.setAttribute("msg", super.msg + e.getMessage());
		}
		
		return super.efetuou;
	}

	@Override
	public String retornaPagina() {
		return super.pagina;
	}

}
